package main
import "fmt"
func main() {
	/*整形
    var n1 int = 2
	fmt.Printf("n1=%d 类型是%T", n1,n1)
	var n2 int8 = 127
	int8的取值范围是-128~127
	var n3 int16 = 32767
	int16的取值范围是-32768~32767
	var n4 int32 = 2147483647
	int32的取值范围是-2147483648~2147483647
	var n5 int64 = 9223372036854775807
	int64的取值范围是-9223372036854775808~9223372036854775807
	var n6 uint = 4294967295
	uint的取值范围是0~4294967295
	var n7 uint8 = 255
	uint8的取值范围是0~255
	var n8 uint16 = 65535
	uint16的取值范围是0~65535
	var n9 uint32 = 4294967295
	uint32的取值范围是0~4294967295
	var n10 uint64 = 18446744073709551615
    uint64的取值范围是0~18446744073709551615
	var n11 byte = 255
	byte的取值范围是0~255
	var n12 rune = 18446744073709551615
	rune的取值范围是0~18446744073709551615
	var n13 uintptr = 18446744073709551615
	uintptr的取值范围是0~18446744073709551615
	*/
    /*
	//浮点型
	var f1 float64 = 3.14
	fmt.Printf("f1=%.2f 类型是%T\n", f1,f1)
	var f2 float32 = 5.18
	fmt.Printf("f2=%.2f 类型是%T\n", f2,f2)
	//布尔型
	//只有两个值true和false代表真和假
	var b1 bool = true
	var b2 bool = false
    //%t 表示布尔值
	fmt.Printf("b1=%t 类型是%T\n", b1,b1)	
	fmt.Printf("b2=%t 类型是%T\n", b2,b2)
	fmt.Println(3 > 1, 3 < 1, 3 == 1, 3 != 1, 3 >= 1, 3 <= 1)   
    */

    //字符串型
	var str1 string = "nsd2411"
	//%s 表示字符串,替换的值必须是字符串类型
	//%q 表示带双引号的字符串,替换的值必须是字符串类型
	fmt.Printf("str1=%s 类型是%T\n", str1,str1)
	fmt.Printf("str1=%q 类型是%T\n", str1,str1)
	//`` 原样输出字符串
	var str2 = `
	     <<春望>>
	国破山河在,城春草木深。
	感时花溅泪,恨别鸟惊心。
	烽火连三月,家书抵万金。
	白头搔更短,浑欲不胜簪。
	`
	fmt.Printf("str2=%s 类型是%T\n", str2,str2)
	fmt.Printf("str2=%q 类型是%T\n", str2,str2)
	// \转义字符
	// \n 换行
	// \t 制表符
	// \r 回车
	// \ 反斜杠
	// \" 普通引号
	fmt.Println("nsd2411\nnsd2411")
	fmt.Println("nsd2411\tnsd2411")
	fmt.Println("nsd2411\rnsd2411")
	fmt.Println("nsd2411\\nsd2411")
	fmt.Println("nsd2411\"nsd2411")
    
}